﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.Net;
using System.Threading;
using System.IO;

namespace IRCClient
{
    /// <summary>
    /// Forritið tekur inn IP tölu og port (valfrjálst) sem argument og býr til tilvik af IRCClient klasanum.
	/// IRCClient klasinn sér um tvo þræði; les- og skrifþráð.
	/// - Lesþráðurinn sér um að taka við skilaboðum frá server, parsa þau með Message klasanum og skrifa út í console.
	/// - Skrifþráðurinn sér um að taka við skipunum frá console, parsa þær og senda til servers.
	/// IRCLogger klasinn sér um að logga hverja línu (óþáttaða) í sérstaka skrá.
	/// DCC klasinn heldur sér um að taka við skrá samkvæmt DCC staðlinum.
	/// Constant klasinn heldur utan um ýmsa fasta.
	/// ReplyCode enum'ið heldur utan um RFC kóðana.
    /// </summary>
    class Program
    {
        static void Main(string[] args)
        {
            int port;
            //Ef portnúmer kemur ekki inn.
            if(args.Length == 1)
               port = 6667;
            else
                port = Int32.Parse(args[1]);

            //Parsa ip addressuna
            IPAddress ipAddress;
            if (!IPAddress.TryParse (args[0], out ipAddress))
                ipAddress = Dns.GetHostEntry(args[0]).AddressList[0];

            //Búa til endapunkt serversins útfrá ipAddressunni og porti.
            IPEndPoint serverEndPoint = new IPEndPoint(ipAddress, port);

            //Búum til tilvik af ircClient klasanum okkar og látum fylgja með server endapunktinn.
			IRCClient ircClient = new IRCClient(serverEndPoint);
        }
    }
}
